commonlibsse_ng\re\b/
BGSSaveGameBuffer.rs

1use core::ffi::c_void;
2use core::ptr::NonNull;
3
4use crate::re::Actor::Actor;
5use crate::re::TESForm::TESForm;
6use crate::re::TESObjectREFR::TESObjectREFR;
7use crate::re::offsets_rtti::RTTI_BGSSaveGameBuffer;
8use crate::re::offsets_vtable::VTABLE_BGSSaveGameBuffer;
9use crate::rel::id::VariantID;
10
11#[derive(Debug)]
12pub struct BGSSaveGameBuffer {
13    pub vtable_: *const BGSSaveGameBufferVtbl,
14    pub buffer: NonNull<c_void>,
15    pub size: u32,
16    pub buffer_position: u32,
17}
18
19const _: () = {
20    assert!(core::mem::size_of::<BGSSaveGameBuffer>() == 0x18);
21};
22
23pub struct BGSSaveGameBufferVtbl {
24    /// C++ virtual destructor
25    pub delete: fn(this: *mut BGSSaveGameBuffer),
26
27    pub get_form: fn(this: *const BGSSaveGameBuffer) -> *mut TESForm,
28    pub get_reference: fn(this: *const BGSSaveGameBuffer) -> *mut TESObjectREFR,
29    pub get_actor: fn(this: *const BGSSaveGameBuffer) -> *mut Actor,
30}
31
32impl BGSSaveGameBuffer {
33    pub const RTTI: VariantID = RTTI_BGSSaveGameBuffer;
34    pub const VTABLE: [VariantID; 1] = VTABLE_BGSSaveGameBuffer;
35
36    /// C++ virtual destructor
37    #[inline]
38    pub fn delete(&mut self) {
39        unsafe { ((*self.vtable_).delete)(self) }
40    }
41
42    #[inline]
43    pub fn get_form(&self) -> *mut TESForm {
44        unsafe { ((*self.vtable_).get_form)(self) }
45    }
46
47    #[inline]
48    pub fn get_reference(&self) -> *mut TESObjectREFR {
49        unsafe { ((*self.vtable_).get_reference)(self) }
50    }
51
52    #[inline]
53    pub fn get_actor(&self) -> *mut Actor {
54        unsafe { ((*self.vtable_).get_actor)(self) }
55    }
56
57    #[commonlibsse_ng_derive_internal::relocate_fn(se_id = 35163, ae_id = 36053)]
58    pub fn save_data_endian(data: NonNull<c_void>, size: u32) {}
59}